Conventionally, general-purpose mathematical libraries have been widely used to execute complex and massive computation, for example, in science and technology fields. A general-purpose mathematical library is a collection of subroutines for numerical computation which solve simultaneous linear equations, compute eigenvalues of a matrix, perform a spline interpolation, or solve a differential equation, to name a few examples.
Computing involving a mathematical library is basically realized by a computing system which contain a user program system executing a user program created and used by a user and a library program system executing a library program. The user embeds, in the user program, commands for the execution of the library program to use the library programs.
As described in the foregoing, the user does not need to write a complex numerical analysis program on his own if he uses a mathematical library. That relieves the user of some workload in programming for computation in science and technology fields.
A user program which, as an example, solves simultaneous linear equation Ax=b on a conventional computing system consists of the following series of instructions:
REAL *8 A(LDA,N),B(N)(Generate data)Calculate: Call libraryCALL LU(LDA,N,A,IERR)CALL SOLVE(LDA,N,A,B,IERR)(Use results)END
It is assumed here that A is a matrix given in the form of a two-dimensional array A and that b is a vector given in the form of one-dimensional array B.
As shown above, the user program is arranged to specify a set of data for each execution command in the library program. Put differently, the user program is responsible for entire data management, including selection of a library program, sequence of execution, selection of data format, and intermediate results.
In addition, when the library program in the library program system is modified or a new program is added, the user of the user program needs to make changes to the content of the user program by considering these changes and additions.
The execution commands for the library program contains data format settings. Therefore, to change an input-value, not only the input value must be changed, but also the execution commands per se must be changed in accordance with the data format.
Patent document 1 (Japanese Unexamined Patent Publication 9-128352/1997 (Tokukaihei 9-128352; published May 16, 1997) describes a master processor and two or more slave processors in a parallel computer. The master processor executing a user program. The slave processors executing only routines in a library. In so doing, the slave processors first start up only once and then wait in an infinite loop. When a library is called, the master processor communicates commands and data needed for execution to the slaves for parallel execution. After that, the slaves return to the same state as before the execution, in other words, go back to an infinite loop, waiting for communications from the master processor. This arrangement reduces the slave processors' start-up overhead in the case of calling the library more repeatedly, which allows for a high speed library call on the parallel computer.
Patent document 2 (Japanese Unexamined Patent Publication 11-039271/1999 (Tokukaihei 11-039271; published Feb. 12, 1999) describes selection, and assigning to a task, of an optimal subroutine from those in a library in accordance with the data size the user wants to solve.
Non-patent documents 1 (GridRPC Tutorial; and 2 (OmniRPC: a Grid RPC system for Parallel Programming; http://www.omni.hpccjp/OmniRPC/index.htmlja) describe grid RPC (Remote Procedure Call) systems.
Patent document 3 (Japanese Unexamined Patent Publication (Tokukai) 2000-231478 (published Aug. 22, 2000) describes an arrangement in which there are provided a specification information defining section and a program generating section. The specification information defining section defines various specification information related to core mathematical expressions representing data processing, a source from which necessary data for the mathematical expression is fetched, a destination to which results of calculations are transferred, and conditions for the data processing. The program generating section generates a program that actually fetches data from the source, performs calculations, and transfers results to the destination based on the defined specification information. The provision of these sections enables automatic generation of a program that realizes the data processing in accordance with the specification information. All one has to do for the automatic generation is to define specification information including the original core mathematical expressions in a table format according to his needs.
Patent document 4 (Japanese Unexamined Patent Publication (Tokukai) 2002-073578 (published Mar. 12, 2002) describes there being provided a proxy computer that relays requests from client computers. The proxy computer contains a transfer-destination list, request transfer means, and result transfer means. In the transfer-destination list, a relationship between the types of requests issued by the client computers and the server objects to be transferred is defined in advance. The request transfer means transfers the requests issued by the client computers to the server objects contained in the transfer-destination list in accordance with the types of the requests. The result transfer means transfers results returned from the server objects to the original client computers. Patent document 5 (Japanese Unexamined Patent Publication (Tokukai) 2004-102507 (published Apr. 2, 2004) describes a system in which when the receiving section of a communications module receives, from a first object, a request for communications with a second object and data to be transmitted to the second object, a communications determining section makes an inquiry to a network device, receives a communications protocol and address information corresponding to the second object from the network device, and determines that this is to be used. Furthermore, the communications section transmits the transmission data in accordance with the communications protocol and address information determined by the communications determining section. Hence, inter-object communications are realized between the first and second objects.